DID大法:多期DID如何做平行趋势检验?
点击蓝字关注我们
之前给大家推送了单期DID平行趋势检验的Stata操作,其实,多期DID的操作也差不多。本来想在国内中国工业经济上找一篇多期DID的论文,利用作者提供的数据给大家分享一下多期DID平行趋势检验的Stata操作,但是没有找到合适的论文。这次,就借用Beck, Levine & Levkov(2010)《银行放松管制对收入分配差距的影响》这篇论文的数据和代码,加以修改和优化,给大家分享一下多期DID平行趋势检验的Stata操作。
多期DID检验平行趋势假设的思路和单期DID一样,还是通过事件研究法对政策的经济效应在年度之间的动态趋势进行分解和分析,只是在计算政策时点前后期数的时候有所不同,单期DID是当前时间减去政策统一实施时间,而多期DID是当前时间减去各自政策实施时间。根据以上思想,我们建立如下的回归模型:
其中,Y表示收入分配差距,用基尼系数的自然对数来表示。REFORM_(i,t-j)是一个虚拟变量,如果州i在t-j时期实行了放松银行管制的政策,那么该变量取值为1,否则为0(M、N分别表示政策时点前和政策时点后的期数)。举例说明,当j=-2时,虚拟变量REFORM_(i,t+2)表示的就是州i在t+2时期实行了放松银行管制的政策,其衡量就是州i放松银行管制前两年的效应。因此,δ_0衡量的是放松银行管制当期的政策效果,δ_(-M)到δ_(-1)衡量的是放松银行管制之前1-M期的政策效果,δ_1到δ_N衡量的是放松银行管制之后1-N期的政策效果。如果δ_(-M)到δ_(-2)显著为0,那么就说明政策之前第2-M期处理组和控制组之间不存在显著差异(以-1期为基准组),也就是平行趋势假设成立,这当然就是我们最期望得到的。
gen policy = wrkyr - branch_reform //生成政策时点前后期数
tab policy
replace policy = -10 if policy < -10
replace policy = 15 if policy > 15
forvalues i=10(-1)1{
gen pre`i'=(policy==-`i')
}
gen current= (policy==0)
forvalues i=1(1)15{
gen post`i'=(policy==`i')
}
drop pre1 //将政策前第一期作为基准组,很重要!!!
*两个命令结果一样
xtreg y pre* current post* i.wrkyr, fe vce(cluster statefip)
reghdfe y pre* current post*, absorb(statefip wrkyr) vce(cluster statefip)
接下来就是根据回归结果,进一步通过直观图形方式对放松银行管制在不同年份之间的动态经济效应进行呈现。从图中可以看出,在放松银行管制之前估计系数在0附近波动(95%的置信区间包含了0值)而放松银行管制实施当年以及以后几年系数显著为负。这表明,处理组和控制组在实施放松银行管制政策之前差异不明显,是可以进行比较的,也就是满足平行趋势的前提假设。在政策时点之后,放松银行管制政策对收入分配差距的负效应在放松管制后的8年左右持续增长,然后趋于平稳。总的来说,放松银行管制使得基尼系数下降了约4%。
*绘图
coefplot, baselevels ///
keep(pre* current post*) ///
vertical ///转置图形
coeflabels( pre10 = "-10" ///
pre9 = "-9" ///
pre8 = "-8" ///
pre7 = "-7" ///
pre6 = "-6" ///
pre5 = "-5" ///
pre4 = "-4" ///
pre3 = "-3" ///
pre2 = "-2" ///
current = "0" ///
post1 = "1" ///
post2 = "2" ///
post3 = "3" ///
post4 = "4" ///
post5 = "5" ///
post6 = "6" ///
post7 = "7" ///
post8 = "8" ///
post9 = "9" ///
post10 = "10" ///
post11 = "11" ///
post12 = "12" ///
post13 = "13" ///
post14 = "14" ///
post15 = "15") ///
yline(0,lcolor(edkblue*0.8)) ///加入y=0这条虚线
ylabel(-0.06(0.02)0.06) ///
xline(10, lwidth(vthin) lpattern(dash) lcolor(teal)) ///
ylabel(,labsize(*0.75)) xlabel(,labsize(*0.75)) ///
ytitle("政策动态经济效应", size(small)) ///加入Y轴标题,大小small
xtitle("政策时点", size(small)) ///加入X轴标题,大小small
addplot(line @b @at) ///增加点之间的连线
ciopts(lpattern(dash) recast(rcap) msize(medium)) ///CI为虚线上下封口
msymbol(circle_hollow) ///plot空心格式
scheme(s1mono)
下图是作者绘制的政策动态经济效应图,作者使用的命令相当复杂和繁琐,有兴趣的朋友可以去下载作者提供的代码。在这里我使用的是更加简单的绘图命令coefplot,细看之下两图只是稍有差别,因为我选择的是政策之前的第1期作为模型的基准组,而作者选择的是政策实施当期作为模型的基准组。需要本篇推文所使用的的数据和Stata代码的朋友,请在后台回复“多期DID”。
参考资料
Beck T , Levkov R L . Big Bad Banks? The Winners and Losers from Bank Deregulation in the United States[J]. Journal of Finance, 2010, 65(5):1637-1667.
点击阅读原文即可留言
学好计量功夫,练就一身绝技!
功夫计量 | Kungfu_econometrics